home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / misc / libx11inc.lha / X11 / Xm / CascadeBP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-13  |  5.0 KB  |  163 lines

  1. /* 
  2.  * (c) Copyright 1989, 1990, 1991, 1992 OPEN SOFTWARE FOUNDATION, INC.
  3.  * ALL RIGHTS RESERVED
  4. */ 
  5. /*   $RCSfile: CascadeBP.h,v $ $Revision: 1.13 $ $Date: 92/05/14 12:48:39 $ */
  6. /*
  7. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  8. /*
  9. *  (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  10. #ifndef  _XmCascadeBP_h
  11. #define  _XmCascadeBP_h
  12.  
  13. #include <Xm/CascadeB.h>
  14. #include <Xm/LabelP.h>
  15.  
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19.  
  20. /* The CascadeButton instance record */
  21.  
  22. typedef    struct 
  23. {                /* resources */
  24.     XtCallbackList    activate_callback;    /* widget fired callback */
  25.     XtCallbackList    cascade_callback;    /* called when the menu is  */
  26.                         /* about to be pulled down */
  27.  
  28.     Widget        submenu;        /* the menu to pull down */
  29.     Pixmap        cascade_pixmap;        /* pixmap for the cascade */
  30.     int         map_delay;        /* time delay for posting */
  31.  
  32.                 /* internal fields */
  33.  
  34.     Boolean        armed;            /* armed flag */
  35.     XRectangle        cascade_rect;        /* location of cascade*/
  36.     XtIntervalId    timer;            /* timeout id */
  37.     Pixmap        armed_pixmap;        /* arm arrow cascade */
  38.  
  39. } XmCascadeButtonPart;
  40.  
  41.  
  42. /* Full instance record declaration */
  43.  
  44. typedef struct _XmCascadeButtonRec
  45. {
  46.     CorePart        core;
  47.     XmPrimitivePart    primitive;
  48.     XmLabelPart        label;
  49.     XmCascadeButtonPart    cascade_button;
  50. } XmCascadeButtonRec;
  51.  
  52. typedef struct _XmCascadeButtonWidgetRec/* OBSOLETE (for compatibility only).*/
  53. {
  54.     CorePart        core;
  55.     XmPrimitivePart    primitive;
  56.     XmLabelPart        label;
  57.     XmCascadeButtonPart    cascade_button;
  58. } XmCascadeButtonWidgetRec;
  59.  
  60.  
  61. /* CascadeButton class structure */
  62.  
  63. typedef struct 
  64. {
  65.     XtPointer    extension;    /* Pointer to extension record */
  66. } XmCascadeButtonClassPart;
  67.  
  68.  
  69. /* Full class record declaration for CascadeButton class */
  70.  
  71. typedef struct _XmCascadeButtonClassRec 
  72. {
  73.     CoreClassPart        core_class;
  74.     XmPrimitiveClassPart    primitive_class;
  75.     XmLabelClassPart        label_class;
  76.     XmCascadeButtonClassPart cascade_button_class;
  77. } XmCascadeButtonClassRec;
  78.  
  79.  
  80. extern XmCascadeButtonClassRec   xmCascadeButtonClassRec;
  81.  
  82. /* Access macro definitions */
  83.  
  84. #define CB_Submenu(cb)        (((XmCascadeButtonWidget)                    \
  85.                                   cb)->cascade_button.submenu)
  86.  
  87. #define CB_ActivateCall(cb)    (((XmCascadeButtonWidget)                    \
  88.                                   cb)->cascade_button.activate_callback)
  89. #define CB_CascadeCall(cb)    (((XmCascadeButtonWidget)                    \
  90.                                   cb)->cascade_button.cascade_callback)
  91.  
  92.  
  93. #define CB_CascadePixmap(cb)    (((XmCascadeButtonWidget)                    \
  94.                                   cb)->cascade_button.cascade_pixmap)
  95. #define CB_ArmedPixmap(cb)    (((XmCascadeButtonWidget)                    \
  96.                                   cb)->cascade_button.armed_pixmap)
  97.  
  98. #define CB_Cascade_x(cb)    (((XmCascadeButtonWidget)                    \
  99.                                   cb)->cascade_button.cascade_rect.x)
  100. #define CB_Cascade_y(cb)    (((XmCascadeButtonWidget)                    \
  101.                                   cb)->cascade_button.cascade_rect.y)
  102. #define CB_Cascade_width(cb)    (((XmCascadeButtonWidget)                    \
  103.                                   cb)->cascade_button.cascade_rect.width)
  104. #define CB_Cascade_height(cb)    (((XmCascadeButtonWidget)                    \
  105.                                   cb)->cascade_button.cascade_rect.height)
  106.  
  107. #define CB_HasCascade(cb)       (((Lab_MenuType(cb) == XmMENU_PULLDOWN)  ||  \
  108.                   (Lab_MenuType(cb) == XmMENU_POPUP)) &&     \
  109.                      (CB_Submenu(cb)))
  110.  
  111.  
  112. #define XmCB_ARMED_BIT          (1 << 0)    
  113. #define XmCB_TRAVERSE_BIT     (1 << 1)
  114.  
  115. #define CB_IsArmed(cb)     (((XmCascadeButtonWidget)(cb))->cascade_button.armed \
  116.               & XmCB_ARMED_BIT)
  117. #define CB_Traversing(cb) (((XmCascadeButtonWidget)                           \
  118.                 (cb))->cascade_button.armed & XmCB_TRAVERSE_BIT)
  119.  
  120. #define CB_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  121.  
  122. #define CB_SetArmed(cb,v)  CB_SetBit (((XmCascadeButtonWidget)             \
  123.                        (cb))->cascade_button.armed,          \
  124.                       XmCB_ARMED_BIT, v)
  125.  
  126. #define CB_SetTraverse(cb,v)  CB_SetBit (((XmCascadeButtonWidget)         \
  127.                        (cb))->cascade_button.armed,          \
  128.                       XmCB_TRAVERSE_BIT, v)
  129.  
  130.  
  131. /********    Private Function Declarations    ********/
  132. #ifdef _NO_PROTO
  133.  
  134. extern void _XmCBHelp() ;
  135. extern void _XmCascadingPopup() ;
  136.  
  137. #else
  138.  
  139. extern void _XmCBHelp( 
  140.                         Widget w,
  141.                         XEvent *event,
  142.                         String *params,
  143.                         Cardinal *num_params) ;
  144. extern void _XmCascadingPopup( 
  145.                         Widget cb,
  146.                         XEvent *event,
  147. #if NeedWidePrototypes
  148.                         int doCascade) ;
  149. #else
  150.                         Boolean doCascade) ;
  151. #endif /* NeedWidePrototypes */
  152.  
  153. #endif /* _NO_PROTO */
  154. /********    End Private Function Declarations    ********/
  155.  
  156.  
  157. #ifdef __cplusplus
  158. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  159. #endif
  160.  
  161. #endif  /* _XmCascadeBP_h */
  162. /* DON'T ADD STUFF AFTER THIS #endif */
  163.